package cn.iocoder.yudao.module.def.controller.admin.project.vo;

import cn.iocoder.yudao.module.def.controller.admin.projectprogress.vo.ProjectProgressRespVO;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalDate;
import java.time.Year;
import java.util.*;

import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false，避免用户导入有问题
public class ProjectRespVO {

    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13058")
    @ExcelIgnore
    private Integer id;

    @Schema(description = "工程分类编码")
//    @ExcelProperty("工程分类编码")
    @ExcelIgnore
    private String projectCate;

    @Schema(description = "工程分类名称")
    @ExcelProperty("工程分类名称")
    private String projectCateName;

    @Schema(description = "省市区")
    @ExcelProperty("省市区")
    private String pca;

    @Schema(description = "建设区域(所在省份)")
    @ExcelProperty("建设区域(所在省份)")
    private String province;

    @Schema(description = "建设区域(所在城市)")
    @ExcelProperty("建设区域(所在城市)")
    private String city;

    @Schema(description = "建设区域")
    @ExcelProperty("建设区域")
    private String area;

    @Schema(description = "建设地点")
    @ExcelProperty("建设地点")
    private String address;

    @Schema(description = "国家下达任务名称", example = "芋艿")
    @ExcelProperty("国家下达任务名称")
    private String assignName;

    @Schema(description = "设施类型", example = "2")
    @ExcelProperty("设施类型")
    private String facilityType;

    @Schema(description = "发改部门批复名称", example = "李四")
    @ExcelProperty("发改部门批复名称")
    private String reformApprovalName;

    @Schema(description = "建设性质")
    @ExcelProperty("建设性质")
    private String constructionNature;

    @Schema(description = "所属战区")
    @ExcelProperty("所属战区")
    private String warZone;

    @Schema(description = "边界（海区）")
    @ExcelProperty("边界（海区）")
    private String seaBorder;

    @Schema(description = "经纬度")
    @ExcelProperty("经纬度")
    private String lngLat;

    @Schema(description = "地形类别")
    @ExcelProperty("地形类别")
    private String terrainCate;

    @Schema(description = "投资年度")
    @ExcelProperty("投资年度")

    private Integer investYear;

    @Schema(description = "投资执行金额[元]")
    @ExcelProperty("投资执行金额[元]")
    private Integer investTotal;

    @Schema(description = "中央投资[元]")
    @ExcelProperty("中央投资[元]")
    private Integer investCentral;

    @Schema(description = "地方投资[元]")
    @ExcelProperty("地方投资[元]")
    private Integer investLocal;

    @Schema(description = "单位", example = "王五")
//    @ExcelProperty("单位")
    @ExcelIgnore
    private String unitName;

    @Schema(description = "下达任务规模")
    @ExcelProperty("下达任务规模[公里]")
    private String taskScale;

    @Schema(description = "实际建设规模")
    @ExcelProperty("实际建设规模[公里]")
    private String buildScale;

    @Schema(description = "建设状态", example = "1")
    @ExcelProperty("建设状态")
    private String buildStatus;

    @Schema(description = "调整情况", example = "2")
    @ExcelProperty("调整情况")
    private String adjustStatus;

    @Schema(description = "调整来源项目ID", example = "25267")
    @ExcelProperty("调整来源项目ID")
    private String adjustId;

    @Schema(description = "招投标时间")
    @ExcelProperty("招投标时间")
    private String bidDate;

    @Schema(description = "开工时间")
    @ExcelProperty("开工时间")
    private String beginDate;

    @Schema(description = "初验时间")
    @ExcelProperty("初验时间")
    private String inspectDate;

    @Schema(description = "竣工验收时间")
    @ExcelProperty("竣工验收时间")
    private String finishDate;

    @Schema(description = "审计报告出具时间")
    @ExcelProperty("审计报告出具时间")
    private String reportDate;

    @Schema(description = "设施状态", example = "2")
    @ExcelProperty("设施状态")
    private String facilityStatus;

    @Schema(description = "被替代数量")
    @ExcelProperty("被替代数量[公里]")
    private Integer replaceNum;

    @Schema(description = "替代项目建设单位")
    @ExcelProperty("替代项目建设单位")
    private String replaceCompany;

    @Schema(description = "建设单位")
    @ExcelProperty("建设单位")
    private String buildCompany;

    @Schema(description = "使用单位类别")
    @ExcelProperty("使用单位类别")
    private String useCompanyCate;

    @Schema(description = "使用单位")
    @ExcelProperty("使用单位")
    private String useCompany;

    @Schema(description = "管理单位")
    @ExcelProperty("管理单位")
    private String manageCompany;

    @Schema(description = "承建单位")
    @ExcelProperty("承建单位")
    private String contructCompany;

    @Schema(description = "监理单位")
    @ExcelProperty("监理单位")
    private String supervisorCompany;

    @Schema(description = "维护责任单位")
    @ExcelProperty("维护责任单位")
    private String responsibleMaintainCompany;

    @Schema(description = "维护施工单位")
    @ExcelProperty("维护施工单位")
    private String constructMaintainCompany;

    @Schema(description = "建设成效")
    @ExcelProperty("建设成效")
    private String constructEffect;

    @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对")
    @ExcelProperty("备注")
    private String remark;

    @Schema(description = "其他扩展")
//    @ExcelProperty("其他扩展")
    @ExcelIgnore
    private String otherExtends;

    @Schema(description = "图片")
//    @ExcelProperty("图片")
    @ExcelIgnore
    private List<String> imgs;

    @Schema(description = "视频")
//    @ExcelProperty("视频")
    @ExcelIgnore
    private List<String> videos;


    @Schema(description = "图片")
    @ExcelProperty("图片")
    private String img;

    @Schema(description = "视频")
    @ExcelProperty("视频")
    private String video;

    @Schema(description = "创建时间")
//    @ExcelProperty("创建时间")
    @ExcelIgnore
    private LocalDateTime createTime;

    @ExcelIgnore
    private ProjectProgressRespVO projectProgress;

    @Schema(description = "实际设施名称")
    @ExcelProperty("实际设施名称")
    private String actualFacilityName;

    @Schema(description = "设备序列号")
    @ExcelProperty("设备序列号")
    private String deviceNum;

    @Schema(description = "设备状态")
    @ExcelProperty("设备状态")
    private String deviceStatus;

        @Schema(description = "设备状态备注")
    @ExcelProperty("设备状态备注")
    private String deviceStatusRemark;

    @Schema(description = "编码")
    @ExcelIgnore
    private String codeTxt;

}